package com.example;

import java.util.Arrays;
import java.util.Comparator;

/**
 * @Author loubobooo
 * @Description leetcode #179. 最大数
 * @Date 2022/2/24
 */
public class LargestNumber {

    /**
     * 方法描述:给定一组非负整数 nums，重新排列每个数的顺序（每个数不可拆分）使之组成一个最大的整数。
     * 注意：输出结果可能非常大，所以你需要返回一个字符串而不是整数。
     *
     * 示例 1：
     *
     * 输入：nums = [10,2]
     * 输出："210"
     * @param: [nums]
     * @return: java.lang.String
     * @author: loubobooo
     * @date: 2022/2/24
     */
    public String largestNumber(int[] nums) {
        String[] array = new String[nums.length];
        for (int i = 0; i < nums.length; i++) {
            array[i] = String.valueOf(nums[i]);
        }
        Arrays.sort(array, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return (o2+o1).compareTo(o1+o2);
            }
        });
        StringBuilder stringBuilder = new StringBuilder();
        for (String str: array) {
            stringBuilder.append(str);
        }
        String result = stringBuilder.toString();
        //特殊情况 若干个零
        if (result.charAt(0) == '0') {
            result = "0";
        }
        return result;
    }
}
